package com.sky.controller.rider;

import com.sky.dto.PickUpDTO;
import com.sky.result.Result;
import com.sky.service.rider.CourierTradeOrderService;
import com.sky.vo.CourierTradeOrderVO;
import com.sky.vo.OrderDetailVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/trade")
@Slf4j
@Api(tags = "配送服务")
public class CourierTradeOrderController {

    @Autowired
    private CourierTradeOrderService courierTradeOrderService;

    @GetMapping("/queryPendingOrders")
    @ApiOperation("查询骑手接单列表")
    public Result<List<CourierTradeOrderVO>> queryPendingOrders(Integer status, Long courierId){
        log.info("查询骑手接单列表 -- {} ----{}", status, courierId);

        return courierTradeOrderService.queryPendingOrders(status, courierId);
    }

    @GetMapping("/queryTobePickedUpTradeOrders")
    @ApiOperation("待取货查询")
    public Result queryTobePickedUpTradeOrders(Integer status,Long courierId){
        return courierTradeOrderService.queryPendingOrders(status,courierId);
    }


    @GetMapping("/toBedeliveredList")
    @ApiOperation("待送达查询")
    public Result toBedeliveredList(Integer status,Long courierId){
        return courierTradeOrderService.queryPendingOrders(status,courierId);
    }

    @GetMapping("/queryCanceldTradeOrderList")
    @ApiOperation("已取消查询")
    public Result queryCanceldTradeOrderList(Integer status,Long courierId){
        return courierTradeOrderService.queryPendingOrders(status,courierId);
    }

    @GetMapping("/queryTradeOrderByTradeNo")
    @ApiOperation("根据订单号查询运单信息")
    public Result queryTradeOrderByTradeNo(String tradeNo){
        return courierTradeOrderService.queryTradeOrderByTradeNo(tradeNo);
    }

    @GetMapping("/confirmPickUpList")
    @ApiOperation("查询运单菜品详情")
    public Result<List<OrderDetailVO>> confirmPickUpList(String tradeNo){
        log.info("查询运单菜品详情 -- {}", tradeNo);

        return courierTradeOrderService.confirmPickUpList(tradeNo);
    }

    @PutMapping("/confirmPickUp")
    @ApiOperation("确认取货或者确认送达")
    public Result<String> confirmPickUp(@RequestBody PickUpDTO pickUpDTO){
        log.info("确认取货或者确认送达 -- {}", pickUpDTO);

        return courierTradeOrderService.confirmPickUp(pickUpDTO);
    }
}
